package com.leo;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

/**
 * @ClassName FirstStage
 * @Description 窗口的基本功能展示
 * @Author wangss
 * @date 2020.05.15 22:53
 * @Version 1.0
 */
public class FirstStage extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 设置标题
        primaryStage.setTitle("JavaFx");

        // 标题图标
        primaryStage.getIcons().add(new Image("image/icon.png"));

        // 设置窗口最小化
//        primaryStage.setIconified(true);

        // 设置窗口最大化
//        primaryStage.setMaximized(true);

        // 设置窗口的宽带
        primaryStage.setWidth(500d);

        // 设置窗口的高度
        primaryStage.setHeight(500d);

        // 不可调整窗口大小
//        primaryStage.setResizable(false);

        // 设置窗口的最大最小伸缩范围
//        primaryStage.setMaxWidth(1000d);
//        primaryStage.setMaxHeight(1000d);
//        primaryStage.setMinWidth(300d);
//        primaryStage.setMinHeight(300d);

        // 设置全屏
//        primaryStage.setFullScreen(true);
//        primaryStage.setScene(new Scene(new Group()));

        // 设置透明度
        primaryStage.setOpacity(0.5d);

        // 设置窗口永远在最上边
        primaryStage.setAlwaysOnTop(true);

        // 展示窗口
        primaryStage.show();

        // 获取窗口的宽度和高度：这里需要注意，如果没有设置窗口的宽度和高度，需要在窗口展示以后才能获取到
        System.out.println("窗口的宽度 = " + primaryStage.getWidth());
        System.out.println("窗口的高度 = " + primaryStage.getHeight());

        // 动态获取窗口的高和宽：用到了观察者模式
        primaryStage.heightProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("当前高度 = " + newValue.doubleValue());
            }
        });
        primaryStage.widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("当前宽度 = " + newValue.doubleValue());
            }
        });

        // 关闭窗口
//        primaryStage.close();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
